﻿using Black.Surface2DEngine.Graphic2D.Render2D.Process2D;

namespace Black.Surface2DEngine.Graphic2D.Render2D.Extensions
{
    /// <summary>
    /// Classe statique pour les extensions sur Entity2DText
    /// </summary>
    public static class Entity2DTextExtensions
    {
        /// <summary>
        /// Lance un effet Text sur l'objet
        /// </summary>
        /// <param name="p_oEntity">Objet sur qui on fait le process</param>
        /// <param name="p_fTime">Temps pour effectuer l'affichage en milliseconde</param>
        /// <param name="p_eMethod">Méthode de rendu</param>
        /// <param name="p_bLoop">TRUE redémare le process à la fin, FALSE sinon</param>
        /// <param name="p_iLoopOccurs">Indique combien de fois il doit boucler, NULL si boucle infinie</param>
        /// <returns>Instance du process</returns>
        public static Process2DText TextProcess(Entity2DText p_oEntity, float p_fTime, Effect2DText p_eMethod, bool p_bLoop, int? p_iLoopOccurs)
        {
            // Vérification

            if ( p_oEntity == null )
                return (null);

            // Création du process

            Process2DText oProcess = new Process2DText(p_oEntity, p_fTime, p_eMethod, p_bLoop, p_iLoopOccurs);

            // Ajout au moteur

            p_oEntity.Screen.Process2DStart(oProcess);

            // On retourne le process

            return (oProcess);
        }
    }
}
